// 埃拉斯托特尼筛法
// 本算法的核心思想是：给出要筛选数值的范围 n，找出根号 n 以内的素数 p1, p2.
// 先用 2 去筛，即把 2 留下，把 2 的倍数剔除掉；再用下一个素数 3 筛，把 3 留
// 下，把 3 的倍数剔除掉，不断重复下去

var countPrimes = function (n) {
  let count = 0;
  let signs = new Array(n);
  for (let i = 2; i < n; i++) {
    if (!signs[i - 1]) {
      count++;
      for (let j = i * i; j <= n; j += i) {
        signs[j - 1] = true;
      }
    }
  }
  return count;
};
